#include <iostream>
#include <stack>

using namespace std;

const int N = 1e5 + 10;

int a[N], b[N];

int main()
{
	// 1 2 3 4
	// 2 4 1 3

	int q; cin >> q;
	while(q--)
	{
		int len; cin >> len;
		//思路：
		//1.先把两个序列保存下来，a,b
		//2.让a中的元素依次进栈,
		//b中元素从后往前,如果栈顶元素和b中的元素相等就一直出栈
		//3.如果最后栈不为空，则返回 No

		for(int i = 1; i <= len; i++) cin >> a[i];
		for(int i = 1; i <= len; i++) cin >> b[i];

		stack<int> st;
		int j = 1;
		for(int i = 1; i <= len; i++)
		{
			//让元素依次进栈
			st.push(a[i]);

			//模拟出栈
			while(j <= len && st.size() && st.top() == b[j])
			{
				st.pop();
				j++;
			}
		}

		if(st.size()) cout << "No" << endl;
		else cout << "Yes" << endl;
	}

	return 0;
}


